#include <cstdio>
#include <algorithm>
#include <stack>
#include <cstring>
using namespace std;
const int MAXN=1050;
char in[MAXN];
char out[MAXN];
// in 0 out 1
// t数组用来记录列车进出站的记录，最后再统一输出
char t[MAXN];
int n,j,k;
int main(void){
	stack<char> s;
	while(~scanf("%d%s%s",&n,in,out)){
		//注意多组样例，变量数组都要初始化
		j=0;
		k=0;
		while(!s.empty()){
			s.pop();
		}
		memset(t,'0',sizeof(t));
		//入栈
		for(int i=0;i<n;i++){
			s.push(in[i]);
			t[k++]='0';
			//这里一定要注意j<n 和!s.empty()这两个判断！！
			//例子 3 123 213
			//如果栈顶元素和out数组当前元素相同，说明该出栈
			while(j<n && !s.empty() && s.top()==out[j]){
				s.pop();
				j++;
				t[k++]='1';
			}
		}
		//这一遍是防止前面循环只入不出
		while(j<n && s.top()==out[j]){
			s.pop();
			j++;
			t[k++]='1';
		}
		if(k==2*n){
			printf("Yes.\n");
			for(int i=0;i<k;i++){
				if(t[i]=='0'){
					printf("in\n");
				}
				else{
					printf("out\n");
				}
			}
			printf("FINISH\n");
		}
		else{
			printf("No.\nFINISH\n");
		}
	}
	return 0;
}
